/**
 * @(#) AddressProxy.as
 *
 * @date		2009. 02. 18.
 * @version		1.0
 * @author		Shin, Yunwoo
 * @description	 주소변경 - Proxy
 * 				
 */
package com.skt.common_hr.myprofile_stc.model
{
	import com.skt.common_hr.common.puremvc.CommonProxy;
	import com.skt.common_hr.myprofile_stc.model.vo.FamilyVO;
	import com.wcl.utils.DateUtil;
	
	import mx.collections.ArrayCollection;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	
	public class FamilyProxy extends CommonProxy
	{
		public static const NAME:String = "FamilyProxy";
		
		public static const LOAD_FAMILY_COMPLETE:String 	= "loadFamilyComplete";
		public static const LOAD_FAMILY_FAILED:String 		= "loadFamilyFailed";
		public static const SAVE_FAMILY_COMPLETE:String		= "saveFamilyComplete";
		public static const SAVE_FAMILY_FAILED:String		= "saveFamilyFailed";
		
		public var familyList:ArrayCollection;
		public var codeList:ArrayCollection;
		
		/**
		 * 생성자
		 * 
		 * @param
		 * @return void
		 */
		public function FamilyProxy(data:Object=null)
		{
			super(NAME, data);
		}
		
		
		
		
		public function load(pernr:String):void
		{
			var params:Object = new Object();
			params["I_PERNR"] = pernr;
			params["I_ACTIO"] = "DIS";
						
			loadData("Z_HR_0120", params, result, fault); 
		}
		
		/**
		 * 주소를 저장함
		 * 		- DataLoader 를 생성하고 Import Parameter 객체를 생성, RFC를 호출
		 * 
		 * @param   pernr: 사번
		 * 			PSTLZ: 우편번호
		 * 			LOCAT: 상세주소
		 * 			SUBTY: 주소 구분 (1-본적, 2-현주소, 3-주민등록주소)
		 * @return void
		 */
		public function save(pernr:String, data:Array):void
		{
			var params:Object = new Object();
			params["I_PERNR"] = pernr;
			params["I_ACTIO"] = "INS";
			
			var tables:Object = new Object();
			tables["T_IN"] = data;
			saveData("Z_HR_0120", params, tables, resultSave, faultSave);
		}


		///////////////////////////////////////////////////////////////////////////////////////////////////
		//
		//	Event Listeners
		//
		///////////////////////////////////////////////////////////////////////////////////////////////////
		/**
		 * 서버에서 정상적으로 리턴된 결과를 처리
		 * 
		 * @param
		 * @return void
		 */
		public function result(event:ResultEvent):void
		{
			if(retCode==0) {
				familyList = parseFamilyList(event.result.T_OUT);
				codeList = parseCodeList(event.result.T_CODE1);
				facade.sendNotification(LOAD_FAMILY_COMPLETE, this);
			}
			else {
				facade.sendNotification(LOAD_FAMILY_FAILED, this);
			}
		}
		
		/**
		 * 서버에서 오류가 발생했을 처리
		 * 
		 * @param
		 * @return void
		 */
		private function fault(event:FaultEvent):void
		{
			facade.sendNotification(LOAD_FAMILY_FAILED, this);
		}
		
		
		public function resultSave(event:ResultEvent):void
		{
			if(retCode==0) {
				facade.sendNotification(SAVE_FAMILY_COMPLETE, this);
			}
			else {
				facade.sendNotification(SAVE_FAMILY_FAILED, this);
			}
		}
		
		/**
		 * 서버에서 오류가 발생했을 처리
		 * 
		 * @param
		 * @return void
		 */
		private function faultSave(event:FaultEvent):void
		{ 
			facade.sendNotification(SAVE_FAMILY_FAILED, this);
		}
		

		private function parseFamilyList(src:ArrayCollection):ArrayCollection
		{
			var dNow:Date = DateUtil.todayNoTime();
			var familyList:ArrayCollection = new ArrayCollection();
			for each (var item:Object in src)
			{
				var vo:FamilyVO = new FamilyVO;
				
				vo.KDSVH	=	item.KDSVH;		// standard 가족관계
				vo.KDSVHT	= 	item.KDSVHT;	// 관계
				vo.FNAME	=	item.FNAME;		// 성명
				vo.REGNO	=	item.REGNO;		// 주민등록번호 (한국)
				vo.AGE		=	item.AGE;		// 나이
				
				vo.LIVID	=	item.LIVID;		//동거여부
				vo.HNDID	=	item.HNDID;		//장애여부
				vo.DPTID	=	item.DPTID;		//부양가족여부
				vo.WTEXT	=	item.WTEXT;		//근무처명
				vo.FASIN	=	item.FASIN;		//교육 기관
				vo.FAJOB	=	item.FAJOB;		//가족구성원의 직무
				 
				vo.SUBTY	=	item.SUBTY;		// 
				vo.SEQNR	=	item.SEQNR;		// 
				vo.BEGDA	=	DateUtil.stringToDateTime(item.BEGDA);	//발령 유형 이름
				vo.ENDDA	=	DateUtil.stringToDateTime(item.ENDDA);	//발령 사유 이름
				vo.OBJPS	=	item.OBJPS;		// 
				 
				//20120208 
				var checkYear:int = parseInt(String(item.BEGDA).substring(0, 4));
				
				var checkDate:Date = vo.BEGDA;
				checkDate.hours = checkDate.minutes = checkDate.seconds = checkDate.milliseconds = 0;
								
				if(checkDate < dNow ) {
					vo.ISFMEDIT = false;	
				} else {
					vo.ISFMEDIT = true;
				}
				
				familyList.addItem(vo);
			}
			return familyList;
		}
		
		private function parseCodeList(src:ArrayCollection):ArrayCollection
		{
			var list:ArrayCollection = new ArrayCollection();
			for each (var item:Object in src)
			{
				var obj:Object = new Object();
				obj.label 	= item.TEXT;
				obj.data	= item.KEY;
				list.addItem(obj);
			}
			return list;
		}
		
		public function toJSONobject(vo:FamilyVO):Object
		{
			var jsonObj:Object = new Object();
					// 
			jsonObj["BEGDA"]	=	DateUtil.toBasicString(vo.BEGDA);	//발령 유형 이름
			jsonObj["ENDDA"]	=	DateUtil.toBasicString(vo.ENDDA);	//발령 사유 이름
			jsonObj["KDSVH"]	= 	vo.KDSVH;							// standard 가족관계
			jsonObj["KDSVHT"]	=	vo.KDSVHT;							// 관계
			jsonObj["FNAME"]	=	vo.FNAME;							// 성명
			jsonObj["REGNO"]	=	vo.REGNO;		// 주민등록번호 (한국)
			jsonObj["AGE"]		=	vo.AGE;			// 나이

			jsonObj["LIVID"]		=	vo.LIVID;			//동거여부
			jsonObj["HNDID"]		=	vo.HNDID;			//장애여부
			jsonObj["DPTID"]		=	vo.DPTID;			//부양가족여부
			jsonObj["WTEXT"]		=	vo.WTEXT;			//근무처명
			jsonObj["FASIN"]		=	vo.FASIN;			//교육 기관
			jsonObj["FAJOB"]		=	vo.FAJOB;			//가족구성원의 직무
			
			jsonObj["SUBTY"]	=	vo.SUBTY;		//최종담당업무
			jsonObj["SEQNR"]	=	vo.SEQNR;		//경력인정기간(월)
			jsonObj["OBJPS"]	=	vo.OBJPS;		//경력인정기간(월)

			return jsonObj;
		}
	}
}